var app = {
    BackToTop: function () {
        var tpl = '<a href="javascript:;"class="backtotop">返回顶部</a>';
        $('body').append(tpl);
        $(window).scroll(function () {
            if ($(this).scrollTop() === 0) {
                $('.backtotop').fadeOut();
            } else {
                $('.backtotop').fadeIn();
            }
        });

        $('.backtotop').on('click', function () {
            $('body,html').animate({
                scrollTop: 0
            }, 1200);
            return false;
        });
    },

    DeleteProduct: function (productId) {
        KevinShop.Common.ShoppingCart.DeletePrdFromCart(productId);
        this.RefShoppingCart();
    },
    IsShoppingCartPop: false,

    RefShoppingCart: function () {
        $.ajax({
            type: "post",
            url: '/Purchase/GetShippingCartItems',
            success: function (data) {
                if (data.ProductList && data.ProductList.length) {
                    $('#shoppingCartPrompt .goodsList').html('');

                    for (var i = 0; i < data.ProductList.length; i++) {
                        var pro = data.ProductList[i];
                        var html = ' <div class="goodsItem" id="p1001">'
                            + ' <div class="goodsImg">'
                           + '      <a href="/Product/ProductDetail?prd=' + pro.ProductId + '">'
                           + '           <img src="' + pro.ImageName + '" alt="">'
                           + '       </a>'
                           + '   </div>'
                           + '   <div class="goodsTitle"><a href="/Product/ProductDetail?prd=' + pro.ProductId + '">' + pro.Title.substr(0,35) + '</a></div>'
                           + '  <div class="goodsPrice">'
                           + '      <p><em>￥' + pro.UnitPrice.toFixed(2) + '</em>×' + pro.Quantity + '</p>'
                           + '      <p onclick="app.DeleteProduct(\'' + pro.ProductId + '\')" ><i class="fa fa-trash-o" data-id="p1001"></i></p>'
                           + '   </div>'
                         + '  </div>';
                        $('#shoppingCartPrompt .goodsList').append(html);
                    }


                    var html = '<div class="allGoods">'
                               + '<p>共<em class="goodsAmount">' + data.TotalQuantity + '</em>件商品　共计<em class="allPay">￥ ' + data.TotalAmount.toFixed(2) + '</em></p>'
                           + '</div>'
                            + '<div class="allGoods"><a href="/Purchase/ShoppingCart" id="goCheckOutInside">去结算</a><br class="clearfix"></div>';
                    $('#shoppingCartPrompt .goodsCheckout').html(html);
                }
                else {
                    $('#shoppingCartPrompt .nogoods').show();
                    $('#shoppingCartPrompt .goodsList').hide();
                    $('#shoppingCartPrompt .goodsCheckout').hide();
                }

            },
        });
    },

    IsShoppingCartPop: false,
    Timeout: null,
    ShoppingCart: function () {
        $('#shoppingCart').on('mouseenter', function () {
            app.Timeout && clearTimeout(app.Timeout);
            if (!app.IsShoppingCartPop) {

                app.IsShoppingCartPop = true;

                if (KevinShop.Common.ShoppingCart.TotalQty) {
                    $('#shoppingCartPrompt .nogoods').hide();
                    $('#shoppingCartPrompt .goodsList').show();
                    $('#shoppingCartPrompt .goodsCheckout').show();
                    $('#shoppingCartPrompt .goodsList').html('加载中...');
                    $('#shoppingCartPrompt').slideDown();

                    app.RefShoppingCart();

                }
                else {
                    $('#shoppingCartPrompt .nogoods').show();
                    $('#shoppingCartPrompt .goodsList').hide();
                    $('#shoppingCartPrompt .goodsCheckout').hide();
                    $('#shoppingCartPrompt').slideDown();
                }
            }
        });
        $('#shoppingCart').on('mouseleave', function () {

            app.Timeout = setTimeout(function () {
                $('#shoppingCartPrompt').fadeOut();
                app.IsShoppingCartPop = false;
            }, 700);
        });
    },

    RemoveGoodsItem: function () {
        var id = $('.goodsItem i').data('id');
        $('.goodsItem[id=' + id + ']').remove();
    },

    Spin: function (ele) {
        var opts = {
            lines: 11, // The number of lines to draw
            length: 5, // The length of each line
            width: 5, // The line thickness
            radius: 15, // The radius of the inner circle
            corners: 1, // Corner roundness (0..1)
            rotate: 9, // The rotation offset
            direction: 1, // 1: clockwise, -1: counterclockwise
            color: '#bbb', // #rgb or #rrggbb or array of colors
            speed: 1.2, // Rounds per second
            trail: 32, // Afterglow percentage
            shadow: false, // Whether to render a shadow
            hwaccel: false, // Whether to use hardware acceleration
            className: 'spinner', // The CSS class to assign to the spinner
            zIndex: 2e9, // The z-index (defaults to 2000000000)
            top: '50%', // Top position relative to parent
            left: '50%' // Left position relative to parent
        };
        var target = document.getElementById(ele);
        var spinner = new Spinner(opts).spin(target);
    },

    FuckIE: function () {
        if (!$.support.leadingWhitespace) {
            window.location.href('/upgradeyourbrowser.html');
        }
    },

    ChangeWareHouses: function () {
        $('#changeWarehouses').fancybox({
            maxWidth: 800,
            maxHeight: 600,
            fitToView: true,
            width: '70%',
            height: '70%',
            wrapCSS: 'custom-fancy-wrapper',
            helpers: {
                overlay: {
                    css: {
                        'background': 'rgba(255,255,255,.6)'
                    },
                    closeClick: false
                }
            },
            tpl: {
                closeBtn: '<i class="fa fa-times"></i>'
            },
            autoSize: false
        });
    },
    
    SiteTopBannerAd: function (type) {
        var bigBanner = $(".big_topbanner");
        var smallgBanner = $(".small_topbanner");
        if (bigBanner && smallgBanner) {
            var btn = $("#btnBannerShop");
            if (type == 1 || smallgBanner.css("display") == "none") {
                smallgBanner.slideDown();
                bigBanner.slideUp();
                btn.addClass("index_topbanner_unfold");
                btn.html("展开<s></s>");
            } else if (bigBanner.css("display") == "none") {
                smallgBanner.slideUp();
                bigBanner.slideDown();
                btn.removeClass("index_topbanner_unfold");
                btn.html("收起<s></s>");
            }
        }
    },

    DelayRun: function (code, time) {
        setTimeout(code, time);
    }
};

var NongLi = {
    RunGLNL: function () {
        var today = new Date();
        var d = new Array("周日", "周一", "周二", "周三", "周四", "周五", "周六");
        var DDDD = d[today.getDay()];
        DDDD = DDDD + " " + (NongLi.CnDateofDateStr(today)); //显示农历
        DDDD = DDDD + NongLi.SolarTerm(today); //显示二十四节气
        $('#nongLi').html(DDDD).show();
    },

    DaysNumberofDate: function (DateGL) {
        return parseInt((Date.parse(DateGL) - Date.parse(DateGL.getFullYear() + "/1/1")) / 86400000) + 1;
    },

    CnDateofDate: function (DateGL) {
        var CnData = new Array(
            0x16, 0x2a, 0xda, 0x00, 0x83, 0x49, 0xb6, 0x05, 0x0e, 0x64, 0xbb, 0x00, 0x19, 0xb2, 0x5b, 0x00,
            0x87, 0x6a, 0x57, 0x04, 0x12, 0x75, 0x2b, 0x00, 0x1d, 0xb6, 0x95, 0x00, 0x8a, 0xad, 0x55, 0x02,
            0x15, 0x55, 0xaa, 0x00, 0x82, 0x55, 0x6c, 0x07, 0x0d, 0xc9, 0x76, 0x00, 0x17, 0x64, 0xb7, 0x00,
            0x86, 0xe4, 0xae, 0x05, 0x11, 0xea, 0x56, 0x00, 0x1b, 0x6d, 0x2a, 0x00, 0x88, 0x5a, 0xaa, 0x04,
            0x14, 0xad, 0x55, 0x00, 0x81, 0xaa, 0xd5, 0x09, 0x0b, 0x52, 0xea, 0x00, 0x16, 0xa9, 0x6d, 0x00,
            0x84, 0xa9, 0x5d, 0x06, 0x0f, 0xd4, 0xae, 0x00, 0x1a, 0xea, 0x4d, 0x00, 0x87, 0xba, 0x55, 0x04
        );
        var CnMonth = new Array();
        var CnMonthDays = new Array();
        var CnBeginDay;
        var LeapMonth;
        var Bytes = new Array();
        var I;
        var CnMonthData;
        var DaysCount;
        var CnDaysCount;
        var ResultMonth;
        var ResultDay;
        var yyyy = DateGL.getFullYear();
        var mm = DateGL.getMonth() + 1;
        var dd = DateGL.getDate();
        if (yyyy < 100) yyyy += 1900;
        if ((yyyy < 1997) || (yyyy > 2020)) {
            return 0;
        }
        Bytes[0] = CnData[(yyyy - 1997) * 4];
        Bytes[1] = CnData[(yyyy - 1997) * 4 + 1];
        Bytes[2] = CnData[(yyyy - 1997) * 4 + 2];
        Bytes[3] = CnData[(yyyy - 1997) * 4 + 3];
        if ((Bytes[0] & 0x80) != 0) {
            CnMonth[0] = 12;
        } else {
            CnMonth[0] = 11;
        }
        CnBeginDay = (Bytes[0] & 0x7f);
        CnMonthData = Bytes[1];
        CnMonthData = CnMonthData << 8;
        CnMonthData = CnMonthData | Bytes[2];
        LeapMonth = Bytes[3];
        for (I = 15; I >= 0; I--) {
            CnMonthDays[15 - I] = 29;
            if (((1 << I) & CnMonthData) != 0) {
                CnMonthDays[15 - I]++;
            }
            if (CnMonth[15 - I] == LeapMonth) {
                CnMonth[15 - I + 1] = -LeapMonth;
            } else {
                if (CnMonth[15 - I] < 0) {
                    CnMonth[15 - I + 1] = -CnMonth[15 - I] + 1;
                } else {
                    CnMonth[15 - I + 1] = CnMonth[15 - I] + 1;
                }
                if (CnMonth[15 - I + 1] > 12) {
                    CnMonth[15 - I + 1] = 1;
                }
            }
        }
        DaysCount = NongLi.DaysNumberofDate(DateGL) - 1;
        if (DaysCount <= (CnMonthDays[0] - CnBeginDay)) {
            if ((yyyy > 1901) && (NongLi.CnDateofDate(new Date((yyyy - 1) + "/12/31")) < 0)) {
                ResultMonth = -CnMonth[0];
            } else {
                ResultMonth = CnMonth[0];
            }
            ResultDay = CnBeginDay + DaysCount;
        } else {
            CnDaysCount = CnMonthDays[0] - CnBeginDay;
            I = 1;
            while ((CnDaysCount < DaysCount) && (CnDaysCount + CnMonthDays[I] < DaysCount)) {
                CnDaysCount += CnMonthDays[I];
                I++;
            }
            ResultMonth = CnMonth[I];
            ResultDay = DaysCount - CnDaysCount;
        }
        if (ResultMonth > 0) {
            return ResultMonth * 100 + ResultDay;
        } else {
            return ResultMonth * 100 - ResultDay;
        }
    },

    CnYearofDate: function (DateGL) {
        var YYYY = DateGL.getFullYear();
        var MM = DateGL.getMonth() + 1;
        var CnMM = parseInt(Math.abs(NongLi.CnDateofDate(DateGL)) / 100);
        if (YYYY < 100) YYYY += 1900;
        if (CnMM > MM) YYYY--;
        YYYY -= 1864;
        return NongLi.CnEra(YYYY) + "年";
    },

    CnMonthofDate: function (DateGL) {
        var CnMonthStr = new Array("零", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊");
        var Month;
        Month = parseInt(NongLi.CnDateofDate(DateGL) / 100);
        if (Month < 0) {
            return "闰" + CnMonthStr[-Month] + "月";
        } else {
            return CnMonthStr[Month] + "月";
        }
    },

    CnDayofDate: function (DateGL) {
        var CnDayStr = new Array("零",
            "初一", "初二", "初三", "初四", "初五",
            "初六", "初七", "初八", "初九", "初十",
            "十一", "十二", "十三", "十四", "十五",
            "十六", "十七", "十八", "十九", "二十",
            "廿一", "廿二", "廿三", "廿四", "廿五",
            "廿六", "廿七", "廿八", "廿九", "三十");
        var Day;
        Day = (Math.abs(NongLi.CnDateofDate(DateGL))) % 100;
        return CnDayStr[Day];
    },

    DaysNumberofMonth: function (DateGL) {
        var MM1 = DateGL.getFullYear();
        MM1 < 100 ? MM1 += 1900 : MM1;
        var MM2 = MM1;
        MM1 += "/" + (DateGL.getMonth() + 1);
        MM2 += "/" + (DateGL.getMonth() + 2);
        MM1 += "/1";
        MM2 += "/1";
        return parseInt((Date.parse(MM2) - Date.parse(MM1)) / 86400000);
    },
    CnEra: function (YYYY) {
        var Tiangan = new Array("甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸");
        var Dizhi = new Array("子(鼠)", "丑(牛)", "寅(虎)", "卯(兔)", "辰(龙)", "巳(蛇)", "午(马)", "未(羊)", "申(猴)", "酉(鸡)", "戌(狗)", "亥(猪)");
        // var Dizhi = new Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥");
        return Tiangan[YYYY % 10] + Dizhi[YYYY % 12];
    },

    CnDateofDateStr: function (DateGL) {
        if (NongLi.CnMonthofDate(DateGL) == "零月") return "　请调整您的计算机日期!";
        else return "农历" + NongLi.CnYearofDate(DateGL) + " " + NongLi.CnMonthofDate(DateGL) + NongLi.CnDayofDate(DateGL);
    },

    SolarTerm: function (DateGL) {
        var SolarTermStr = new Array(
            "小寒", "大寒", "立春", "雨水", "惊蛰", "春分",
            "清明", "谷雨", "立夏", "小满", "芒种", "夏至",
            "小暑", "大暑", "立秋", "处暑", "白露", "秋分",
            "寒露", "霜降", "立冬", "小雪", "大雪", "冬至");
        var CurrentSolarTermStr = new Array('0105小寒', '0120大寒', '0203立春', '0218雨水', '0305惊蜇', '0320春分', '0404清明', '0419谷雨', '0505立夏', '0520小满', '0605芒种', '0621夏至', '0706小暑', '0722大暑', '0807立秋', '0822处暑', '0907白露', '0922秋分', '1008寒露', '1023霜降', '1107立冬', '1122小雪', '1206大雪', '1221冬至');
        var DifferenceInMonth = new Array(
            1272060, 1275495, 1281180, 1289445, 1299225, 1310355,
            1321560, 1333035, 1342770, 1350855, 1356420, 1359045,
            1358580, 1355055, 1348695, 1340040, 1329630, 1318455,
            1306935, 1297380, 1286865, 1277730, 1274550, 1271556);
        var DifferenceInYear = 31556926;
        var BeginTime = new Date(1901 / 1 / 1);
        BeginTime.setTime(947120460000);
        for (; DateGL.getFullYear() < BeginTime.getFullYear() ;) {
            BeginTime.setTime(BeginTime.getTime() - DifferenceInYear * 1000);
        }
        for (; DateGL.getFullYear() > BeginTime.getFullYear() ;) {
            BeginTime.setTime(BeginTime.getTime() + DifferenceInYear * 1000);
        }
        for (var M = 0; DateGL.getMonth() > BeginTime.getMonth() ; M++) {
            BeginTime.setTime(BeginTime.getTime() + DifferenceInMonth[M] * 1000);
        }
        if (DateGL.getDate() > BeginTime.getDate()) {
            BeginTime.setTime(BeginTime.getTime() + DifferenceInMonth[M] * 1000);
            M++;
        }
        if (DateGL.getDate() > BeginTime.getDate()) {
            BeginTime.setTime(BeginTime.getTime() + DifferenceInMonth[M] * 1000);
            M == 23 ? M = 0 : M++;
        }
        var JQ = "";
        var d = new Date();
        var s = '';
        if (d.getMonth() < 9) s += '0';
        s += '' + (d.getMonth() + 1);
        if (d.getDate() < 10) s += '0';
        s += '' + (d.getDate());
        var i = 0;
        while (i < CurrentSolarTermStr.length && s >= CurrentSolarTermStr[i]) i++;
        i--;
        if (DateGL.getDate() == BeginTime.getDate()) {
            JQ += " 今日 <font color='#ffdd00'><b>" + SolarTermStr[M] + "</b></font>";
        } else if (DateGL.getDate() == BeginTime.getDate() - 1) {
            JQ += " 明日 <font color='#ffdd00'><b>" + SolarTermStr[M] + "</b></font>";
        } else if (DateGL.getDate() == BeginTime.getDate() - 2) {
            JQ += " 后日 <font color='#ffdd00'><b>" + SolarTermStr[M] + "</b></font>";
        } else {
            if (i < 0) {
                JQ = " 二十四节气";
            } else {
                JQ = " 正值<font color='#ffdd00'><b>" + CurrentSolarTermStr[i].substr(4) + "</b></font>";
            }
            if (DateGL.getMonth() == BeginTime.getMonth()) {
                JQ += " 本月";
            } else {
                JQ += " 下月";
            }
            JQ += BeginTime.getDate() + "日" + "<font color='#ffdd00'><b>" + SolarTermStr[M] + "</b></font>";
        }
        return JQ;
    }
};

$(document).ready(function () {
    app.DelayRun('app.SiteTopBannerAd(1)', 3000);
    app.BackToTop();
    app.ShoppingCart();
    app.FuckIE();
    app.ChangeWareHouses();
    NongLi.RunGLNL();

    $('.goodsItem i').on('click', function () {
        app.RemoveGoodsItem();
    });
});